package proyectoX;

import java.awt.Image;
import java.util.ArrayList;
import java.util.Stack;

import javax.swing.ImageIcon;






/**
 * Clase que implementa el robot de tipo militar.
 * @author Daprotis Mauro - Heiland Federico
 *
 */
public class Militar extends Robot {
		Image bala;
	/**
	 * Constructor del robot militar
	 * @param gri grilla a la que pertenece
	 * @param ga  game al que pertence
	 */
	public Militar(Grilla gri,Game ga){
		g=gri;
		baul=new Stack<Objeto>();
		sizeBaul=0;
		game=ga;
		Puntaje=0;
		Combustible=300;
		Direccion=1;
		int[] inicio=gri.getInicio();
		fila=inicio[0];
		col=inicio[1];
	    municion=20;
	    pincel=Cpincel=false;
	    balas= new ArrayList<Entity>();
	    ImageIcon iib=  new ImageIcon(this.getClass().getResource("/image/bola.png"));
	    bala= iib.getImage();
		
	}
	/**
	 * Metodo que maneja un disparo.
	 */
	public void disparar(){
			if (municion>0)
			{
				Disparo shot = new Disparo(this,bala,this.getFila()*40,this.getCol()*40,this.getDireccion());
				balas.add(shot);
				municion--;
			}
		
	}
	private void mover(){
		switch (Direccion){
		case 0: fila=fila-1;break;
		case 1: col=col+1;break;
		case 2: fila=fila+1;break;
		case 3: col=col-1;break;
		}
	}
	/**
	 * Metodo que permite al robot avanzar por la grilla.
	 * @return Arreglo con las coordenadas anteriores.
	 */
	public int[] avanzar(){
		int toR[]={fila,col};
		Celda c=null;
		switch (Direccion){
		case 0: c=g.getCelda(fila-1, col);break;
		case 1: c=g.getCelda(fila, col+1);break;
		case 2: c=g.getCelda(fila+1, col);break;
		case 3: c=g.getCelda(fila, col-1);break;
		}
		
		if (c!=null){ 
			Objeto o=c.getObjeto();
			switch (c.getTipo()){
				case 0: { if(o==null)  {
										Combustible=Combustible-2;
									    mover();
										}				
						  else {
							  switch (o.getTipo()){
							  case 0:
							  case 1: {
								  	    Combustible=Combustible-2;
							  		    mover();
							  }; break;
							  case 2: {
								       Combustible=Combustible-2;
								       mover();
								       Combustible+=100;
								       if (Combustible>500) Combustible=500;
								       g.setCelda(fila, col, c.getTipo(), -1);
							  };break;
							  case 3: {
								  	  Combustible=Combustible-2;
								  	  mover();
								  	  municion+=20;
								  	  if (municion>40) municion=40;
								  	  g.setCelda(fila, col, c.getTipo(), -1);
								  	  
							  };break;
							  case 4: {
								  	  Combustible=Combustible-2;
								  	  mover();
								  	  Puntaje+=100;
								  	  g.setCelda(fila, col, c.getTipo(), -1);
							  };break;
							  
							  case 5: {};break;
							  case 6: {};break;
							  case 7: {};break;
							  case 8: {};break;
							  }
							  
						  }
				
			
				};break;
				case 1:{ if(o==null)  {
									   Combustible=Combustible-1;
									   mover();
									  }				
						 else {
							 switch (o.getTipo()){
							  case 0:
							  case 1: {
								  	    Combustible=Combustible-2;
							  		    mover();
							  }; break;
							 case 2: {
								 	  Combustible=Combustible-1;
								 	  mover();
								 	  Combustible+=100;
								 	  if (Combustible>500) Combustible=500;
								 	  g.setCelda(fila, col, c.getTipo(), -1);
							 };break;
							 case 3: {
							  	  Combustible=Combustible-1;
							  	  mover();
							  	  municion+=20;
							  	  if (municion>40) municion=40;
							  	  g.setCelda(fila, col, c.getTipo(), -1);
							  	  
						  };break;
							 case 4: {
								 	  Combustible=Combustible-1;
								 	  mover();
								 	  Puntaje+=100;
								 	  g.setCelda(fila, col, c.getTipo(), -1);
							 };break;
							 case 5: {};break;
							 case 6: {};break;
							 case 7: {};break;
							 case 8: {};break;
							  }	
						 }
				};break;
				case 2:
				case 3: break;
		}
		}
	
		return toR;
	}

	
	
	
	
	
}
